home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Spanish Scene 1
/
SpanishScene1.iso
/
spanish pack n°1 by llfb
/
--llfb--
/
programas
/
sources1.dms
/
sources1.adf
/
SOURCES
/
Vectores
/
Transforming_GlenzVector.ASM
< prev
next >
Wrap
Assembly Source File
|
1996-06-04
|
12KB
|
443 lines
;GLENZVECTOR BY LADO OF FI-RE CREW IN 1992 !
; org $25000
; load $25000
Section Roman,code_c
; >extern 'DF0:sources/raytr.dat',sinus
j lea $30000,a0 ;memoria torlese
lo clr.l (a0)+
cmp.l #$60000,a0
bcs lo
lea $dff000,a6 ;custom
wr move.l 4(a6),d0
lsr.l #8,d0
cmp.w #$131,d0
bne wr
move.w #$7fff,$96(a6) ;clear DMACON
move.w #$7fff,$9a(a6) ;clear INTENA
move.l #copper,$84(a6)
clr.w $8a(a6) ;start copper
move.w #$87d0,$96(a6) ;DMACON
move.w #$c010,$9a(a6)
h1 bsr wait ;waitblitter
h2 move.l 4(a6),d0 ;waitraster
lsr.l #8,d0
cmp.w #$d0,d0
bne h2
bsr filler
bsr chcor
btst #6,$bfe001
bne h1
bsr wait
move.w #$7fff,$96(a6)
move.w #$7fff,$9a(a6)
clr.w $88(a6) ;start original copper
move.w #$87f0,$96(a6)
move.w #$e02c,$9a(a6)
clr.l d0
rts ;END
filler add.w #2,addx ;xszog novelese
and.w #$1fe,addx
add.w #4,addy ;yszog novelese
and.w #$1fe,addy
add.w #2,addz ;zszog novelese
and.w #$1fe,addz
lea coords0(pc),a0 ;pontok x,y,z koordinatai
lea sinus(pc),a1 ;sinus ertekek
lea $80(a1),a3 ;cosinus ertekek
lea tarolo(pc),a2 ;2D x,y letarolasa
lea addx(pc),a4 ;szogek
move.l #13,d7 ;pontok szama
h3 movem.w (a0)+,d0/d1/d6 ;x,y,z
move.w 4(a4),d5 ;Zszog
bsr calcul ;Z-rotation
move.w d0,d6 ;X tarolasa
move.w d3,d0 ;Y
move.w (a4),d5 ;Xszog
bsr calcul ;X-rotation
move.w d0,d6 ;uj Y tarolasa
move.w d3,d0 ;Z
move.w 2(a4),d5 ;Yszog
bsr calcul ;Y-rotation
exg d0,d3 ;X csere Z-vel Z=d3
moveq #12,d6 ;lekepezes 2D-re
move.w #$444,d2
sub.w d3,d2 ;$444-Z
muls d2,d0 ;z'*x
asr.l d6,d0 ;z'*x/2048=2D X
muls d2,d1 ;z'*y
asr.l d6,d1 ;z'*y/2048=2D Y
add.w #150,d0 ;X=X+150 kozepre a kepernyon
add.w #100,d1 ;Y=Y+100
move.w d0,(a2)+ ;2D X tarolasa
move.w d1,(a2)+ ;2D Y tarolasa
dbf d7,h3 ;14-szer
move.l #$ffff8000,$72(a6) ;vonalhuzashoz standard ertekek
move.l #$ffffffff,$44(a6)
move.w #120,$60(a6) ;kepernyo szelessege
eor.w #$8000,erno+2 ;kepernyo csere
eor.w #$8000,copscr ;csere a copperben is
eor.w #$8000,copscr+4
eor.w #$8000,copscr+8
move.l erno(pc),a0
add.l #30+[192*$78],a0
bsr wait
move.l #$01000002,$40(a6)
move.w #$28-[[13*16]/8],$66(a6)
move.l a0,$54(a6)
move.w #$8d0d,$58(a6)
lea tarolo(pc),a1 ;2D x,y ertekek
lea meghat2(pc),a2 ;structure
lea sinus+$400(pc),a3 ;sor kezdopontja /0-f/ + $a4a or $b4a
lea sinus+$680(pc),a5 ;szelesseg/2/ es vonal hossz values
move.w (a2)+,lap ;lapok szama /24/
h7 move.l (a2)+,d7 ;hany pontot kosson ossze
move.l (a2)+,a4 ;oszzekotesi sorrend
move.l (a2)+,a0 ;melyik kepernyore
add.l erno(pc),a0 ;ide rajzol
movem.w (a4),d0/d1/d2 ;lathatosag eldontese
move.w (a1,d1.w),d3 ;x1
sub.w (a1,d0.w),d3 ;X1-X0
move.w 2(a1,d2.w),d4 ;y2
sub.w 2(a1,d1.w),d4 ;Y2-Y1
move.w 2(a1,d1.w),d5 ;y1
sub.w 2(a1,d0.w),d5 ;Y1-Y0
move.w (a1,d2.w),d6 ;x2
sub.w (a1,d1.w),d6 ;X2-X1
mulu d4,d3 ;(y2-y1)(x1-x0)=d3
mulu d6,d5 ;(y1-y0)(x2-x1)=d5
sub.w d5,d3
bmi vakon ;nem latszik
nb move.w (a4)+,d5 ;1.pont
move.w (a1,d5.w),d0 ;x1 koordinata
move.w 2(a1,d5.w),d1 ;y1 koordinata
bsr lines ;vonalhuzo
vakon subq.w #1,lap ;lapszam csokkentes
bne h7 ;van meg ?
move.l erno(pc),a0
add.l #30+[190*$78],a0
bsr wait ;uzemmodban dolgozik
move.l #$09f00012,$40(a6)
move.w #$28-[[13*16]/8],$64(a6)
move.w #$28-[[13*16]/8],$66(a6)
move.l a0,$50(a6)
move.l a0,$54(a6)
move.w #$8a0d,$58(a6) ;feltolt
rts
lines move.w (a4)+,d5 ;kovetkezo pont
move.w (a1,d5.w),d2 ;x2
move.w 2(a1,d5.w),d3 ;y2
movem.w d2/d3,-(a7) ;kovetkezo pont latarolasa
cmp.w d1,d3 ;y2-y1
bgt p1
exg d0,d2 ;kisebb --> coords csere
exg d1,d3 ;mindig a nagyobb y-bol kell huzni !
beq not
p1 move.w #120,d5 ;kepernyo szelessege
move.w d1,d4 ;nagyobb y
mulu d5,d4 ;120*y = pont sora
move.w d0,d5 ;x0
add.l a0,d4 ;$30000+x0 = pont oszlopa
lsr.w #3,d5 ;pont sora/8
add.w d5,d4 ;megkapja a pont helyet
moveq #0,d5
sub.w d1,d3 ;Y
sub.w d0,d2 ;X /x1-x2/
bpl p2
moveq #1,d5 ;x2 kisebb volt,a kapott X negativ
neg.w d2 ;most mar pozitiv X
p2 move.w d3,d1 ;Y
add.w d1,d1 ;2Y
cmp.w d2,d1 ;X-2Y
dbhi d3,p3 ;csokkenti Y-t ha
p3 move.w d3,d1 ;Y
sub.w d2,d1 ;Y-X
bpl p4
exg d2,d3 ;X csereje Y-al
p4 addx.w d5,d5
add.w d2,d2 ;2Y
move.w d2,d1 ;2Y
sub.w d3,d2 ;2Y-X
addx.w d5,d5
add.w d0,d0
move.w d2,d6
sub.w d3,d6
add.w d3,d3
ok move.w (a5,d3.w),d3 ;$58
move.w (a3,d0.w),d0 ;$40
move.b dat(pc,d5.w),d5 ;melyik siknyolcad
bsr wait
move.w d2,$52(a6) ;2y-x
move.w d0,$40(a6) ;12-15-->sor kezdopontja /0-f/ + a4a
move.b d5,$43(a6) ;siknyolcad
move.l d4,$48(a6) ;vonal kezdocime
move.l d4,$54(a6) ;vonal kezdocime
move.w d1,$62(a6) ;2y
move.w d6,$64(a6) ;2y-2x
move.w d3,$58(a6) ;szelesseg=2 , magassag=vonal hossza
not movem.w (a7)+,d0/d1
dbf d7,lines
rts
dat dc.l $3431353,$b4b1757 ;siknyolcad
calcul move.w (a3,d5.w),d4 ;cos ertek
move.w (a1,d5.w),d5 ;sin ertek
move.w d0,d2 ;c1
move.w d1,d3 ;c2
muls d4,d0 ;c1*cos(c0angle)
muls d5,d1 ;c2*sin(c0angle)
muls d4,d3 ;c2*cos(c0angle)
muls d5,d2 ;c1*sin(c0angle)
sub.l d1,d0 ;c1*cos(c0angle)-c2*sin(c0angle)
add.l d2,d3 ;c2*cos(c0angle)+c1*sin(c0angle)
add.l d0,d0
add.l d3,d3
swap d0 ;uj c1
swap d3 ;uj c2
move.w d6,d1
rts
chcor tst.w lass
bmi kell
subq.w #1,lass
rts
kell moveq #0,d6
moveq #[14*3]-1,d7
lea coords0(pc),a0
move.l nextcor(pc),a1
cv4 cmpm.w (a0)+,(a1)+
beq cv1
ble cv2
addq.w #5,-2(a0)
bra cv3
cv2 subq.w #5,-2(a0)
cv3 addq.w #1,d6
cv1 dbf d7,cv4
tst.w d6
bne nem
move.w #150,lass
add.l #[[14*3]*2],nextcor
addq.w #1,obj
dik cmp.w #5,obj
bne nem
cmp.w #5,dik+2
bne nb2
addq.w #1,dik+2
nb2 clr.w obj
move.l #coords1,nextcor
nem rts
wait btst #$e,2(a6) ;waitblitter
bne wait
rts
copper dc.w $100,$200,$8e,$2c81,$90,$2cc1,$92,$38,$94,$d0
dc.w $120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
dc.w $130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0
dc.w $180,0,$108,$50,$10a,$50
; color ******************
copcol dc.w $182,$005 ;belso, sotetebb felulet 500
dc.w $184,$58f ;kulso, vilagosabb szin f85
dc.w $186,$58f ;----------------------
dc.w $188,$58f ;----------------------
dc.w $18a,$33a ;belso, vilagosabb felulet a33
dc.w $18c,$69f ;kulso felulet alatti, logikai szin f96
dc.w $18e,$58f ;----------------------
; *******************
dc.w $e0,3,$e4,3,$e8,3,$e2
copscr dc.w 0,$e6,$28,$ea,$50
dc.w $3001,$fffe,$100,$3200,$180,$ff0,$3101,$fffe,$180,0
dc.w $f001,$fffe,$100,$200,$180,$ff0,$f101,$fffe,$180,0
dc.w $ffff,$fffe
;!!!!!!!!!!! LADO !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; METAMORF GLENZ KOCKA , csak a koordinatakato kell modositani !
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
coords0 dc.w 0,0,180 ;0. pont
dc.w 0,0,180 ;1.
dc.w 0,0,180 ;2.
dc.w 0,0,180 ;3.
dc.w 180,180,-180 ;4.
dc.w 180,-180,-180 ;5.
dc.w -180,-180,-180 ;6.
dc.w -180,180,-180 ;7.
dc.w 0,0,180 :8.
dc.w 0,90,0 ;9.
dc.w 90,0,0 ;10.
dc.w 0,-90,0 ;11.
dc.w -90,0,0 ;12.
dc.w 0,0,-180 ;13.
coords1 dc.w 0,0,180 ;0. pont
dc.w 0,0,180 ;1.
dc.w 0,0,180 ;2.
dc.w 0,0,180 ;3.
dc.w 180,180,-180 ;4.
dc.w 180,-180,-180 ;5.
dc.w -180,-180,-180 ;6.
dc.w -180,180,-180 ;7.
dc.w 0,0,180 :8.
dc.w 0,90,0 ;9.
dc.w 90,0,0 ;10.
dc.w 0,-90,0 ;11.
dc.w -90,0,0 ;12.
dc.w 0,0,-180 ;13.
coords2 dc.w 180,180,180 ;0.
dc.w 180,-180,180 ;1.
dc.w -180,-180,180 ;2.
dc.w -180,180,180 ;3.
dc.w 180,180,-180 ;4.
dc.w 180,-180,-180 ;5.
dc.w -180,-180,-180 ;6.
dc.w -180,180,-180 ;7.
dc.w 0,0,180 :8.
dc.w 0,180,0 ;9.
dc.w 180,0,0 ;10.
dc.w 0,-180,0 ;11.
dc.w -180,0,0 ;12.
dc.w 0,0,-180 ;13.
coords3 dc.w 180,180,180 ;0.
dc.w 180,-180,180 ;1.
dc.w -180,-180,180 ;2.
dc.w -180,180,180 ;3.
dc.w 180,180,-180 ;4.
dc.w 180,-180,-180 ;5.
dc.w -180,-180,-180 ;6.
dc.w -180,180,-180 ;7.
dc.w 0,0,300 :8.
dc.w 0,300,0 ;9.
dc.w 300,0,0 ;10.
dc.w 0,-300,0 ;11.
dc.w -300,0,0 ;12.
dc.w 0,0,-300 ;13.
coords4 dc.w 80,280,180 ;0.
dc.w 80,-280,180 ;1.
dc.w -80,-280,180 ;2.
dc.w -80,280,180 ;3.
dc.w 80,280,-180 ;4.
dc.w 80,-280,-180 ;5.
dc.w -80,-280,-180 ;6.
dc.w -80,280,-180 ;7.
dc.w 0,0,180 :8.
dc.w 0,280,0 ;9.
dc.w 80,0,0 ;10.
dc.w 0,-280,0 ;11.
dc.w -80,0,0 ;12.
dc.w 0,0,-180 ;13.
coords5 dc.w 30,220,140 ;0.
dc.w 20,-140,80 ;1.
dc.w -20,-140,80 ;2.
dc.w -30,220,140 ;3.
dc.w 30,220,-140 ;4.
dc.w 20,-140,-80 ;5.
dc.w -20,-140,-80 ;6.
dc.w -30,220,-140 ;7.
dc.w 0,150,290 :8.
dc.w -20,260,0 ;9.
dc.w 60,130,0 ;10.
dc.w -10,-250,0 ;11.
dc.w -50,-20,0 ;12.
dc.w 0,150,-290 ;13.
coords6 dc.w 20,160,160 ;0.
dc.w 20,-160,160 ;1.
dc.w -20,-160,160 ;2.
dc.w -20,160,160 ;3.
dc.w 20,160,-160 ;4.
dc.w 20,-160,-160 ;5.
dc.w -20,-160,-160 ;6.
dc.w -20,160,-160 ;7.
dc.w 0,0,300 :8.
dc.w 0,300,0 ;9.
dc.w 40,0,0 ;10.
dc.w 0,-300,0 ;11.
dc.w -40,0,0 ;12.
dc.w 0,0,-300 ;13.
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
meghat2 dc.w 36
dc.l 2,kot1,$28,2,kot2,0,2,kot3,$28,2,kot4,0,2,kot5,0
dc.l 2,kot6,$28,2,kot7,0,2,kot8,$28,2,kot9,0,2,kot10,$28
dc.l 2,kot11,0,2,kot12,0,2,kot13,$28,2,kot14,0,2,kot15,$28
dc.l 2,kot16,$28,2,kot17,0,2,kot18,$28,2,kot19,0,2,kot20,$28
dc.l 2,kot21,0,2,kot22,$28,2,kot23,0,2,kot24,$50,2,kot25,$50
dc.l 2,kot26,$50,2,kot27,$50,2,kot28,$50,2,kot29,$50,2,kot30,$50
dc.l 2,kot31,$50,2,kot32,$50,2,kot33,$50,2,kot34,$50,2,kot35,$50
dc.l 2,kot36,$28
kot1 dc.w 0,4,32,0
kot2 dc.w 4,8,32,4
kot3 dc.w 8,12,32,8
kot4 dc.w 12,0,32,12
kot5 dc.w 16,0,36,16
kot6 dc.w 0,12,36,0
kot7 dc.w 12,28,36,12
kot8 dc.w 20,4,40,20
kot9 dc.w 4,0,40,4
kot10 dc.w 0,16,40,0
kot11 dc.w 16,20,40,16
kot12 dc.w 24,8,44,24
kot13 dc.w 8,4,44,8
kot14 dc.w 4,20,44,4
kot15 dc.w 20,24,44,20
kot16 dc.w 28,12,48,28
kot17 dc.w 12,8,48,12
kot18 dc.w 8,24,48,8
kot19 dc.w 24,28,48,24
kot20 dc.w 20,16,52,20
kot21 dc.w 24,20,52,24
kot22 dc.w 28,24,52,28
kot23 dc.w 16,28,52,16
kot24 dc.w 4,0,32,4
kot25 dc.w 12,8,32,12
kot26 dc.w 12,0,36,12
kot27 dc.w 16,28,36,16
kot28 dc.w 4,20,40,4
kot29 dc.w 16,0,40,16
kot30 dc.w 4,8,44,4
kot31 dc.w 24,20,44,24
kot32 dc.w 12,28,48,12
kot33 dc.w 24,8,48,24
kot34 dc.w 16,20,52,16
kot35 dc.w 24,28,52,24
kot36 dc.w 28,16,36,28
addx dc.w 0
addy dc.w 0 ;yangle
addz dc.w 0 ;zangle
lap dc.w 0 ;siklapok szama/object
scr dc.l 0 ;kepernyo
erno dc.l $38000 ;kepernyo
nextcor dc.l coords2
lass dc.w 30
obj dc.w 0
sinus incbin "Coleccion_Sources1:sources/vectores/raytr.dat"
tarolo blk.b 100,0